import { useNavigate } from "react-router-dom";
import { useEffect } from "react";

//路由守卫 需要传入一个子组件 表示路由守卫保护的组件
const PrivateRouter=({children})=>{
    const navigate=useNavigate();
    useEffect(()=>{
        //从后端拿到user数据
        const userToken = localStorage.getItem('token');
        if(!userToken){
            //replace: true 是React Router v6中 navigate() 函数的一个配置参数，用于控制路由跳转的行为。它的主要作用是： 用新的路由替换浏览器历史记录中的当前条目，而不是在历史记录中添加新条目 。
            navigate('/login',{replace:true});
        }
    },[navigate])
    
    // 同步检查token，存在则渲染子组件，不存在则不渲染任何内容
    const userToken = localStorage.getItem('token');
    return userToken ? children : null;
}
export default PrivateRouter;